/*
 *  Copyright 2012 Dirk Vranckaert
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package eu.vranckaert.vvl.model;

import android.test.AndroidTestCase;
import eu.vranckaert.vvl.utils.context.Constants;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

import static eu.vranckaert.vvl.testutil.MyAssert.assertListEquals;

/**
 * User: DIRK VRANCKAERT
 * Date: 2/03/12
 * Time: 8:44
 */
public class TrafficInfoAlarmTest extends AndroidTestCase {
    public void testModel() {
        Calendar alarmTime = Calendar.getInstance();
        List<Constants.WeekDays> repeatingDays = Arrays.asList(new Constants.WeekDays[]{Constants.WeekDays.TUESDAY, Constants.WeekDays.SUNDAY});
        TypeTrafficInfoEnum typeTrafficInfo = TypeTrafficInfoEnum.TEXT;
        List<Integer> alarmIds = Arrays.asList(new Integer[]{2, 3, 6});
        
        TrafficInfoGraphicalEnum.Region graphicalRegion = TrafficInfoGraphicalEnum.Region.ANTWERP;

        ArrayList<TrafficInfoTextEnum.InformationType> textInfoTypes = new ArrayList<TrafficInfoTextEnum.InformationType>(
                Arrays.asList(new TrafficInfoTextEnum.InformationType[]{TrafficInfoTextEnum.InformationType.ACCIDENTS, TrafficInfoTextEnum.InformationType.TRAFFIC_INFO})
        );
        ArrayList<TrafficInfoTextEnum.Region> textRegions = new ArrayList<TrafficInfoTextEnum.Region>(
                Arrays.asList(new TrafficInfoTextEnum.Region[]{TrafficInfoTextEnum.Region.LIMBURG, TrafficInfoTextEnum.Region.GENT})
        );
        ArrayList<TrafficInfoTextEnum.Highroad> textHighroads = new ArrayList<TrafficInfoTextEnum.Highroad>();
        ArrayList<TrafficInfoTextEnum.SecondaryRoads> textSecondaryRoads = new ArrayList<TrafficInfoTextEnum.SecondaryRoads>();
        
        TrafficInfoAlarm alarm = new TrafficInfoAlarm();
        alarm.setAlarmTime(alarmTime);
        alarm.setRepeatingDays(repeatingDays);
        alarm.setTypeTrafficInfo(typeTrafficInfo);
        alarm.setAlarmIds(alarmIds);
        alarm.setGraphicalRegion(graphicalRegion);
        alarm.setTextInfoTypes(textInfoTypes);
        alarm.setTextRegions(textRegions);
        alarm.setTextHighroads(textHighroads);
        alarm.setTextSecondaryRoads(textSecondaryRoads);
        
        assertEquals(alarmTime.getTimeInMillis(), alarm.getAlarmTime().getTimeInMillis());
        assertListEquals("The list of repeating days is expected to be equal in size and elements!", repeatingDays, alarm.getRepeatingDays());
        assertEquals(typeTrafficInfo, alarm.getTypeTrafficInfo());
        assertListEquals("The list of alarm-ids is expected to be equal in size and elements!", alarmIds, alarm.getAlarmIds());
        assertEquals(graphicalRegion, alarm.getGraphicalRegion());
        assertListEquals("The list of text info types is expected to be equal in size and elements!", textInfoTypes, alarm.getTextInfoTypes());
        assertListEquals("The list of text regions is expected to be equal in size and elements!", textRegions, alarm.getTextRegions());
        assertListEquals("The list of text highroads is expected to be equal in size and elements!", textHighroads, alarm.getTextHighroads());
        assertListEquals("The list of text secondary roads is expected to be equal in size and elements!", textSecondaryRoads, alarm.getTextSecondaryRoads());
    }
    
    public void testNotEquals() {
        List<Integer> alarmIds1 = Arrays.asList(new Integer[]{2, 3, 6});
        List<Integer> alarmIds2 = Arrays.asList(new Integer[]{14, 25, 23});
        TrafficInfoAlarm alarm1 = new TrafficInfoAlarm();
        alarm1.setAlarmIds(alarmIds1);
        alarm1.setGraphicalRegion(TrafficInfoGraphicalEnum.Region.ANTWERP);
        TrafficInfoAlarm alarm2 = new TrafficInfoAlarm();
        alarm2.setAlarmIds(alarmIds2);
        alarm2.setGraphicalRegion(TrafficInfoGraphicalEnum.Region.GHENT);
        
        assertFalse("Both alarms should not be equal!", alarm1.equals(alarm2));
    }
    
    public void testEquals() {
        List<Integer> alarmIds1 = Arrays.asList(new Integer[]{2, 3, 6});
        List<Integer> alarmIds2 = Arrays.asList(new Integer[]{2, 3, 6});
        TrafficInfoAlarm alarm1 = new TrafficInfoAlarm();
        alarm1.setAlarmIds(alarmIds1);
        alarm1.setGraphicalRegion(TrafficInfoGraphicalEnum.Region.ANTWERP);
        TrafficInfoAlarm alarm2 = new TrafficInfoAlarm();
        alarm2.setAlarmIds(alarmIds2);
        alarm2.setGraphicalRegion(TrafficInfoGraphicalEnum.Region.GHENT);

        assertTrue("Both alarms should be equal!", alarm1.equals(alarm2));
    }

    public void testHashCode() {
        List<Integer> alarmIds1 = Arrays.asList(new Integer[]{2, 3, 6});
        List<Integer> alarmIds2 = Arrays.asList(new Integer[]{2, 3, 6});
        TrafficInfoAlarm alarm1 = new TrafficInfoAlarm();
        alarm1.setAlarmIds(alarmIds1);
        alarm1.setGraphicalRegion(TrafficInfoGraphicalEnum.Region.ANTWERP);
        TrafficInfoAlarm alarm2 = new TrafficInfoAlarm();
        alarm2.setAlarmIds(alarmIds2);
        alarm2.setGraphicalRegion(TrafficInfoGraphicalEnum.Region.GHENT);

        assertEquals("Both hascodes should be equal!", alarm1.hashCode(), alarm2.hashCode());
    }

    public void testToStringForTextAndRepeating() {
        Calendar alarmTime = Calendar.getInstance();
        alarmTime.set(Calendar.YEAR, 2011);
        alarmTime.set(Calendar.MONTH, 6);
        alarmTime.set(Calendar.DAY_OF_MONTH, 4);
        alarmTime.set(Calendar.HOUR_OF_DAY, 14);
        alarmTime.set(Calendar.MINUTE, 3);
        List<Constants.WeekDays> repeatingDays = Arrays.asList(new Constants.WeekDays[]{Constants.WeekDays.TUESDAY, Constants.WeekDays.SUNDAY});
        TypeTrafficInfoEnum typeTrafficInfo = TypeTrafficInfoEnum.TEXT;
        List<Integer> alarmIds = Arrays.asList(new Integer[]{2, 3});

        ArrayList<TrafficInfoTextEnum.InformationType> textInfoTypes = new ArrayList<TrafficInfoTextEnum.InformationType>(
                Arrays.asList(new TrafficInfoTextEnum.InformationType[]{TrafficInfoTextEnum.InformationType.ACCIDENTS, TrafficInfoTextEnum.InformationType.TRAFFIC_INFO})
        );
        ArrayList<TrafficInfoTextEnum.Region> textRegions = new ArrayList<TrafficInfoTextEnum.Region>(
                Arrays.asList(new TrafficInfoTextEnum.Region[]{TrafficInfoTextEnum.Region.LIMBURG, TrafficInfoTextEnum.Region.GENT})
        );
        ArrayList<TrafficInfoTextEnum.Highroad> textHighroads = new ArrayList<TrafficInfoTextEnum.Highroad>(
                Arrays.asList(new TrafficInfoTextEnum.Highroad[]{TrafficInfoTextEnum.Highroad.Highroad_23, TrafficInfoTextEnum.Highroad.Highroad_78})
        );
        ArrayList<TrafficInfoTextEnum.SecondaryRoads> textSecondaryRoads = new ArrayList<TrafficInfoTextEnum.SecondaryRoads>(
                Arrays.asList(new TrafficInfoTextEnum.SecondaryRoads[]{TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_89, TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_91})
        );

        TrafficInfoAlarm alarm = new TrafficInfoAlarm();
        alarm.setAlarmTime(alarmTime);
        alarm.setRepeatingDays(repeatingDays);
        alarm.setTypeTrafficInfo(typeTrafficInfo);
        alarm.setAlarmIds(alarmIds);
        alarm.setTextInfoTypes(textInfoTypes);
        alarm.setTextRegions(textRegions);
        alarm.setTextHighroads(textHighroads);
        alarm.setTextSecondaryRoads(textSecondaryRoads);

        assertEquals("201107041403#TUESDAY;SUNDAY#2;3#TEXT#INC;INF#102;4#23;78#89;91", alarm.toString());
    }

    public void testToStringForTextAndSingleShot() {
        Calendar alarmTime = Calendar.getInstance();
        alarmTime.set(Calendar.YEAR, 2011);
        alarmTime.set(Calendar.MONTH, 6);
        alarmTime.set(Calendar.DAY_OF_MONTH, 4);
        alarmTime.set(Calendar.HOUR_OF_DAY, 14);
        alarmTime.set(Calendar.MINUTE, 3);
        List<Constants.WeekDays> repeatingDays = new ArrayList<Constants.WeekDays>();
        TypeTrafficInfoEnum typeTrafficInfo = TypeTrafficInfoEnum.TEXT;
        List<Integer> alarmIds = Arrays.asList(new Integer[]{2});

        ArrayList<TrafficInfoTextEnum.InformationType> textInfoTypes = new ArrayList<TrafficInfoTextEnum.InformationType>(
                Arrays.asList(new TrafficInfoTextEnum.InformationType[]{TrafficInfoTextEnum.InformationType.ACCIDENTS, TrafficInfoTextEnum.InformationType.TRAFFIC_INFO})
        );
        ArrayList<TrafficInfoTextEnum.Region> textRegions = new ArrayList<TrafficInfoTextEnum.Region>(
                Arrays.asList(new TrafficInfoTextEnum.Region[]{TrafficInfoTextEnum.Region.LIMBURG, TrafficInfoTextEnum.Region.GENT})
        );
        ArrayList<TrafficInfoTextEnum.Highroad> textHighroads = new ArrayList<TrafficInfoTextEnum.Highroad>(
                Arrays.asList(new TrafficInfoTextEnum.Highroad[]{TrafficInfoTextEnum.Highroad.Highroad_23, TrafficInfoTextEnum.Highroad.Highroad_78})
        );
        ArrayList<TrafficInfoTextEnum.SecondaryRoads> textSecondaryRoads = new ArrayList<TrafficInfoTextEnum.SecondaryRoads>(
                Arrays.asList(new TrafficInfoTextEnum.SecondaryRoads[]{TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_89, TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_91})
        );

        TrafficInfoAlarm alarm = new TrafficInfoAlarm();
        alarm.setAlarmTime(alarmTime);
        alarm.setRepeatingDays(repeatingDays);
        alarm.setTypeTrafficInfo(typeTrafficInfo);
        alarm.setAlarmIds(alarmIds);
        alarm.setTextInfoTypes(textInfoTypes);
        alarm.setTextRegions(textRegions);
        alarm.setTextHighroads(textHighroads);
        alarm.setTextSecondaryRoads(textSecondaryRoads);

        assertEquals("201107041403##2#TEXT#INC;INF#102;4#23;78#89;91", alarm.toString());
    }

    public void testToStringForGraphical() {
        Calendar alarmTime = Calendar.getInstance();
        alarmTime.set(Calendar.YEAR, 2011);
        alarmTime.set(Calendar.MONTH, 6);
        alarmTime.set(Calendar.DAY_OF_MONTH, 4);
        alarmTime.set(Calendar.HOUR_OF_DAY, 14);
        alarmTime.set(Calendar.MINUTE, 3);
        List<Constants.WeekDays> repeatingDays = new ArrayList<Constants.WeekDays>();
        TypeTrafficInfoEnum typeTrafficInfo = TypeTrafficInfoEnum.GRAPHICAL;
        List<Integer> alarmIds = Arrays.asList(new Integer[]{2});

        TrafficInfoGraphicalEnum.Region graphicalRegion = TrafficInfoGraphicalEnum.Region.BRUSSELS;

        TrafficInfoAlarm alarm = new TrafficInfoAlarm();
        alarm.setAlarmTime(alarmTime);
        alarm.setRepeatingDays(repeatingDays);
        alarm.setTypeTrafficInfo(typeTrafficInfo);
        alarm.setAlarmIds(alarmIds);
        alarm.setGraphicalRegion(graphicalRegion);

        assertEquals("201107041403##2#GRAPHICAL#brussel", alarm.toString());
    }
    
    public void testAlarmFromStringGraphical() {
        Calendar alarmTime = Calendar.getInstance();
        alarmTime.set(Calendar.YEAR, 2011);
        alarmTime.set(Calendar.MONTH, 6);
        alarmTime.set(Calendar.DAY_OF_MONTH, 4);
        alarmTime.set(Calendar.HOUR_OF_DAY, 14);
        alarmTime.set(Calendar.MINUTE, 3);

        TrafficInfoAlarm expectedAlarm = new TrafficInfoAlarm();
        expectedAlarm.setAlarmTime(alarmTime);
        expectedAlarm.setRepeatingDays(new ArrayList<Constants.WeekDays>());
        expectedAlarm.setTypeTrafficInfo(TypeTrafficInfoEnum.GRAPHICAL);
        expectedAlarm.setAlarmIds(Arrays.asList(new Integer[]{2}));
        expectedAlarm.setGraphicalRegion(TrafficInfoGraphicalEnum.Region.BRUSSELS);

        String alarmToString = "201107041403##2#GRAPHICAL#brussel";
        TrafficInfoAlarm alarm = TrafficInfoAlarm.fromString(alarmToString);

        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.HOUR_OF_DAY), alarm.getAlarmTime().get(Calendar.HOUR_OF_DAY));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.MINUTE), alarm.getAlarmTime().get(Calendar.MINUTE));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.DAY_OF_MONTH), alarm.getAlarmTime().get(Calendar.DAY_OF_MONTH));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.MONTH), alarm.getAlarmTime().get(Calendar.MONTH));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.YEAR), alarm.getAlarmTime().get(Calendar.YEAR));
        assertListEquals("The list of repeating days is expected to be equal in size and elements!", expectedAlarm.getRepeatingDays(), alarm.getRepeatingDays());
        assertEquals(expectedAlarm.getTypeTrafficInfo(), alarm.getTypeTrafficInfo());
        assertListEquals("The list of alarm-ids is expected to be equal in size and elements!", expectedAlarm.getAlarmIds(), alarm.getAlarmIds());
        assertEquals(expectedAlarm.getGraphicalRegion(), alarm.getGraphicalRegion());
        assertListEquals("The list of text info types is expected to be equal in size and elements!", expectedAlarm.getTextInfoTypes(), alarm.getTextInfoTypes());
        assertListEquals("The list of text regions is expected to be equal in size and elements!", expectedAlarm.getTextRegions(), alarm.getTextRegions());
        assertListEquals("The list of text highroads is expected to be equal in size and elements!", expectedAlarm.getTextHighroads(), alarm.getTextHighroads());
        assertListEquals("The list of text secondary roads is expected to be equal in size and elements!", expectedAlarm.getTextSecondaryRoads(), alarm.getTextSecondaryRoads());
    }

    public void testAlarmFromStringTextAndRepeating() {
        Calendar now = Calendar.getInstance();
        
        Calendar alarmTime = Calendar.getInstance();
        alarmTime.set(Calendar.YEAR, 2011);
        alarmTime.set(Calendar.MONTH, 6);
        alarmTime.set(Calendar.DAY_OF_MONTH, 4);
        alarmTime.set(Calendar.HOUR_OF_DAY, 14);
        alarmTime.set(Calendar.MINUTE, 3);

        TrafficInfoAlarm expectedAlarm= new TrafficInfoAlarm();
        expectedAlarm.setAlarmTime(alarmTime);
        expectedAlarm.setRepeatingDays(Arrays.asList(new Constants.WeekDays[]{Constants.WeekDays.TUESDAY, Constants.WeekDays.SUNDAY}));
        expectedAlarm.setTypeTrafficInfo(TypeTrafficInfoEnum.TEXT);
        expectedAlarm.setAlarmIds(Arrays.asList(new Integer[]{2, 3}));
        expectedAlarm.setTextInfoTypes(new ArrayList<TrafficInfoTextEnum.InformationType>(Arrays.asList(
                new TrafficInfoTextEnum.InformationType[]{TrafficInfoTextEnum.InformationType.ACCIDENTS, TrafficInfoTextEnum.InformationType.TRAFFIC_INFO}
        )));
        expectedAlarm.setTextRegions(new ArrayList<TrafficInfoTextEnum.Region>(Arrays.asList(
                new TrafficInfoTextEnum.Region[]{TrafficInfoTextEnum.Region.LIMBURG, TrafficInfoTextEnum.Region.GENT}
        )));
        expectedAlarm.setTextHighroads(new ArrayList<TrafficInfoTextEnum.Highroad>(Arrays.asList(
                new TrafficInfoTextEnum.Highroad[]{TrafficInfoTextEnum.Highroad.Highroad_23, TrafficInfoTextEnum.Highroad.Highroad_78}
        )));
        expectedAlarm.setTextSecondaryRoads(new ArrayList<TrafficInfoTextEnum.SecondaryRoads>(Arrays.asList(
                new TrafficInfoTextEnum.SecondaryRoads[]{TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_89, TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_91}
        )));

        String alarmToString = "201107041403#TUESDAY;SUNDAY#2;3#TEXT#INC;INF#102;4#23;78#89;91";
        TrafficInfoAlarm alarm = TrafficInfoAlarm.fromString(alarmToString);

        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.HOUR_OF_DAY), alarm.getAlarmTime().get(Calendar.HOUR_OF_DAY));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.MINUTE), alarm.getAlarmTime().get(Calendar.MINUTE));
        assertEquals(now.get(Calendar.DAY_OF_MONTH), alarm.getAlarmTime().get(Calendar.DAY_OF_MONTH));
        assertEquals(now.get(Calendar.MONTH), alarm.getAlarmTime().get(Calendar.MONTH));
        assertEquals(now.get(Calendar.YEAR), alarm.getAlarmTime().get(Calendar.YEAR));
        assertListEquals("The list of repeating days is expected to be equal in size and elements!", expectedAlarm.getRepeatingDays(), alarm.getRepeatingDays());
        assertEquals(expectedAlarm.getTypeTrafficInfo(), alarm.getTypeTrafficInfo());
        assertListEquals("The list of alarm-ids is expected to be equal in size and elements!", expectedAlarm.getAlarmIds(), alarm.getAlarmIds());
        assertEquals(expectedAlarm.getGraphicalRegion(), alarm.getGraphicalRegion());
        assertListEquals("The list of text info types is expected to be equal in size and elements!", expectedAlarm.getTextInfoTypes(), alarm.getTextInfoTypes());
        assertListEquals("The list of text regions is expected to be equal in size and elements!", expectedAlarm.getTextRegions(), alarm.getTextRegions());
        assertListEquals("The list of text highroads is expected to be equal in size and elements!", expectedAlarm.getTextHighroads(), alarm.getTextHighroads());
        assertListEquals("The list of text secondary roads is expected to be equal in size and elements!", expectedAlarm.getTextSecondaryRoads(), alarm.getTextSecondaryRoads());
    }

    public void testAlarmFromStringTextAndSingleShot() {
        Calendar alarmTime = Calendar.getInstance();
        alarmTime.set(Calendar.YEAR, 2011);
        alarmTime.set(Calendar.MONTH, 6);
        alarmTime.set(Calendar.DAY_OF_MONTH, 4);
        alarmTime.set(Calendar.HOUR_OF_DAY, 14);
        alarmTime.set(Calendar.MINUTE, 3);

        TrafficInfoAlarm expectedAlarm= new TrafficInfoAlarm();
        expectedAlarm.setAlarmTime(alarmTime);
        expectedAlarm.setRepeatingDays(new ArrayList<Constants.WeekDays>());
        expectedAlarm.setTypeTrafficInfo(TypeTrafficInfoEnum.TEXT);
        expectedAlarm.setAlarmIds(Arrays.asList(new Integer[]{2}));
        expectedAlarm.setTextInfoTypes(new ArrayList<TrafficInfoTextEnum.InformationType>(Arrays.asList(
                new TrafficInfoTextEnum.InformationType[]{TrafficInfoTextEnum.InformationType.ACCIDENTS, TrafficInfoTextEnum.InformationType.TRAFFIC_INFO}
        )));
        expectedAlarm.setTextRegions(new ArrayList<TrafficInfoTextEnum.Region>(Arrays.asList(
                new TrafficInfoTextEnum.Region[]{TrafficInfoTextEnum.Region.LIMBURG, TrafficInfoTextEnum.Region.GENT}
        )));
        expectedAlarm.setTextHighroads(new ArrayList<TrafficInfoTextEnum.Highroad>(Arrays.asList(
                new TrafficInfoTextEnum.Highroad[]{TrafficInfoTextEnum.Highroad.Highroad_23, TrafficInfoTextEnum.Highroad.Highroad_78}
        )));
        expectedAlarm.setTextSecondaryRoads(new ArrayList<TrafficInfoTextEnum.SecondaryRoads>(Arrays.asList(
                new TrafficInfoTextEnum.SecondaryRoads[]{TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_89, TrafficInfoTextEnum.SecondaryRoads.SecondaryRoad_91}
        )));

        String alarmToString = "201107041403##2#TEXT#INC;INF#102;4#23;78#89;91";
        TrafficInfoAlarm alarm = TrafficInfoAlarm.fromString(alarmToString);

        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.HOUR_OF_DAY), alarm.getAlarmTime().get(Calendar.HOUR_OF_DAY));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.MINUTE), alarm.getAlarmTime().get(Calendar.MINUTE));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.DAY_OF_MONTH), alarm.getAlarmTime().get(Calendar.DAY_OF_MONTH));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.MONTH), alarm.getAlarmTime().get(Calendar.MONTH));
        assertEquals(expectedAlarm.getAlarmTime().get(Calendar.YEAR), alarm.getAlarmTime().get(Calendar.YEAR));
        assertListEquals("The list of repeating days is expected to be equal in size and elements!", expectedAlarm.getRepeatingDays(), alarm.getRepeatingDays());
        assertEquals(expectedAlarm.getTypeTrafficInfo(), alarm.getTypeTrafficInfo());
        assertListEquals("The list of alarm-ids is expected to be equal in size and elements!", expectedAlarm.getAlarmIds(), alarm.getAlarmIds());
        assertEquals(expectedAlarm.getGraphicalRegion(), alarm.getGraphicalRegion());
        assertListEquals("The list of text info types is expected to be equal in size and elements!", expectedAlarm.getTextInfoTypes(), alarm.getTextInfoTypes());
        assertListEquals("The list of text regions is expected to be equal in size and elements!", expectedAlarm.getTextRegions(), alarm.getTextRegions());
        assertListEquals("The list of text highroads is expected to be equal in size and elements!", expectedAlarm.getTextHighroads(), alarm.getTextHighroads());
        assertListEquals("The list of text secondary roads is expected to be equal in size and elements!", expectedAlarm.getTextSecondaryRoads(), alarm.getTextSecondaryRoads());
    }
}
